<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.3.1"/>
<title>procman: bot_procman.sheriff.Sheriff Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">procman
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.3.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li class="current"><a href="annotated.html"><span>Python&#160;API</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Python&#160;classes</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Pages</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><b>bot_procman</b></li><li class="navelem"><b>sheriff</b></li><li class="navelem"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html">Sheriff</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="classbot__procman_1_1sheriff_1_1Sheriff-members.html">List of all members</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a>  </div>
  <div class="headertitle">
<div class="title">bot_procman.sheriff.Sheriff Class Reference<div class="ingroups"><a class="el" href="group__python__api.html">Python API</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p>Controls deputies and processes.  
 <a href="classbot__procman_1_1sheriff_1_1Sheriff.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for bot_procman.sheriff.Sheriff:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classbot__procman_1_1sheriff_1_1Sheriff.png" usemap="#bot_procman.sheriff.Sheriff_map" alt=""/>
  <map id="bot_procman.sheriff.Sheriff_map" name="bot_procman.sheriff.Sheriff_map">
</map>
 </div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ac9dad7546c3edf8bf34e2d2f0a39aefe"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#ac9dad7546c3edf8bf34e2d2f0a39aefe">__init__</a></td></tr>
<tr class="memdesc:ac9dad7546c3edf8bf34e2d2f0a39aefe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize a new <a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html" title="Controls deputies and processes.">Sheriff</a> object.  <a href="#ac9dad7546c3edf8bf34e2d2f0a39aefe">More...</a><br/></td></tr>
<tr class="separator:ac9dad7546c3edf8bf34e2d2f0a39aefe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7837d99e6b58f8392bcb4d81c9eb3887"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#a7837d99e6b58f8392bcb4d81c9eb3887">get_name</a></td></tr>
<tr class="memdesc:a7837d99e6b58f8392bcb4d81c9eb3887"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve the sheriff name, as self reported to deputies.  <a href="#a7837d99e6b58f8392bcb4d81c9eb3887">More...</a><br/></td></tr>
<tr class="separator:a7837d99e6b58f8392bcb4d81c9eb3887"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff5bb1da6e34f5528dad7cf7d95f5ecf"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#aff5bb1da6e34f5528dad7cf7d95f5ecf">send_orders</a></td></tr>
<tr class="memdesc:aff5bb1da6e34f5528dad7cf7d95f5ecf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transmit orders to all deputies.  <a href="#aff5bb1da6e34f5528dad7cf7d95f5ecf">More...</a><br/></td></tr>
<tr class="separator:aff5bb1da6e34f5528dad7cf7d95f5ecf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a28733e39fb57677cdd04be79ec91a904"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#a28733e39fb57677cdd04be79ec91a904">add_command</a></td></tr>
<tr class="memdesc:a28733e39fb57677cdd04be79ec91a904"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a new command.  <a href="#a28733e39fb57677cdd04be79ec91a904">More...</a><br/></td></tr>
<tr class="separator:a28733e39fb57677cdd04be79ec91a904"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a74ef75f97144cafbc00c761a7adf9cd2"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#a74ef75f97144cafbc00c761a7adf9cd2">start_command</a></td></tr>
<tr class="memdesc:a74ef75f97144cafbc00c761a7adf9cd2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets a command's desired status to running.  <a href="#a74ef75f97144cafbc00c761a7adf9cd2">More...</a><br/></td></tr>
<tr class="separator:a74ef75f97144cafbc00c761a7adf9cd2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae3707376ff61f163de25986f02f8225d"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#ae3707376ff61f163de25986f02f8225d">restart_command</a></td></tr>
<tr class="memdesc:ae3707376ff61f163de25986f02f8225d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Starts a command if it's not running, or stop and then start it if it's already running.  <a href="#ae3707376ff61f163de25986f02f8225d">More...</a><br/></td></tr>
<tr class="separator:ae3707376ff61f163de25986f02f8225d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab166c0430ed8c7fe2e5b5031946ba410"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#ab166c0430ed8c7fe2e5b5031946ba410">stop_command</a></td></tr>
<tr class="memdesc:ab166c0430ed8c7fe2e5b5031946ba410"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets a command's desired status to stopped.  <a href="#ab166c0430ed8c7fe2e5b5031946ba410">More...</a><br/></td></tr>
<tr class="separator:ab166c0430ed8c7fe2e5b5031946ba410"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a48f941e52ff14bbe079845952f0ea67c"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#a48f941e52ff14bbe079845952f0ea67c">set_command_exec</a></td></tr>
<tr class="memdesc:a48f941e52ff14bbe079845952f0ea67c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the executable string for a command.  <a href="#a48f941e52ff14bbe079845952f0ea67c">More...</a><br/></td></tr>
<tr class="separator:a48f941e52ff14bbe079845952f0ea67c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0aad034f4571659153728c7fba8dd1d"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#ac0aad034f4571659153728c7fba8dd1d">set_command_id</a></td></tr>
<tr class="memdesc:ac0aad034f4571659153728c7fba8dd1d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the command id.  <a href="#ac0aad034f4571659153728c7fba8dd1d">More...</a><br/></td></tr>
<tr class="separator:ac0aad034f4571659153728c7fba8dd1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a50739c97fa09c7a599b926f1c6ae7e"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#a5a50739c97fa09c7a599b926f1c6ae7e">set_command_group</a></td></tr>
<tr class="memdesc:a5a50739c97fa09c7a599b926f1c6ae7e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the command group.  <a href="#a5a50739c97fa09c7a599b926f1c6ae7e">More...</a><br/></td></tr>
<tr class="separator:a5a50739c97fa09c7a599b926f1c6ae7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8a30bf0691114fcef80c18d8cf65282"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#ac8a30bf0691114fcef80c18d8cf65282">set_auto_respawn</a></td></tr>
<tr class="memdesc:ac8a30bf0691114fcef80c18d8cf65282"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set if a deputy should auto-respawn the command when the command terminates.  <a href="#ac8a30bf0691114fcef80c18d8cf65282">More...</a><br/></td></tr>
<tr class="separator:ac8a30bf0691114fcef80c18d8cf65282"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9e47bd02b839a65daf8de78fc935211"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#aa9e47bd02b839a65daf8de78fc935211">set_command_stop_signal</a></td></tr>
<tr class="memdesc:aa9e47bd02b839a65daf8de78fc935211"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the OS signal that is sent to a command when requesting it to stop cleanly.  <a href="#aa9e47bd02b839a65daf8de78fc935211">More...</a><br/></td></tr>
<tr class="separator:aa9e47bd02b839a65daf8de78fc935211"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f14fb663b50c7b9746d8ee06bbdd12d"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#a9f14fb663b50c7b9746d8ee06bbdd12d">set_command_stop_time_allowed</a></td></tr>
<tr class="memdesc:a9f14fb663b50c7b9746d8ee06bbdd12d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set how much time (seconds) to wait for a command to exit cleanly when stopping the command, before sending it a SIGKILL.  <a href="#a9f14fb663b50c7b9746d8ee06bbdd12d">More...</a><br/></td></tr>
<tr class="separator:a9f14fb663b50c7b9746d8ee06bbdd12d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b9750dc2a17052edec129f7841ce3ee"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#a7b9750dc2a17052edec129f7841ce3ee">schedule_command_for_removal</a></td></tr>
<tr class="memdesc:a7b9750dc2a17052edec129f7841ce3ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove a command.  <a href="#a7b9750dc2a17052edec129f7841ce3ee">More...</a><br/></td></tr>
<tr class="separator:a7b9750dc2a17052edec129f7841ce3ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ac148220e1ea218b40edc12b17bd9ff"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#a3ac148220e1ea218b40edc12b17bd9ff">move_command_to_deputy</a></td></tr>
<tr class="memdesc:a3ac148220e1ea218b40edc12b17bd9ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move a command from one deputy to another.  <a href="#a3ac148220e1ea218b40edc12b17bd9ff">More...</a><br/></td></tr>
<tr class="separator:a3ac148220e1ea218b40edc12b17bd9ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a71c74b3794ea8bfb3544a66873999db6"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#a71c74b3794ea8bfb3544a66873999db6">set_observer</a></td></tr>
<tr class="memdesc:a71c74b3794ea8bfb3544a66873999db6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the sheriff into observation mode, or remove it from observation mode.  <a href="#a71c74b3794ea8bfb3544a66873999db6">More...</a><br/></td></tr>
<tr class="separator:a71c74b3794ea8bfb3544a66873999db6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4d9beef725d401bc100d85b17820156"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#ab4d9beef725d401bc100d85b17820156">is_observer</a></td></tr>
<tr class="memdesc:ab4d9beef725d401bc100d85b17820156"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if the sheriff is in observer mode.  <a href="#ab4d9beef725d401bc100d85b17820156">More...</a><br/></td></tr>
<tr class="separator:ab4d9beef725d401bc100d85b17820156"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a642577c26099565a4287a24683ac429b"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#a642577c26099565a4287a24683ac429b">get_deputies</a></td></tr>
<tr class="memdesc:a642577c26099565a4287a24683ac429b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve a list of known deputies.  <a href="#a642577c26099565a4287a24683ac429b">More...</a><br/></td></tr>
<tr class="separator:a642577c26099565a4287a24683ac429b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3862ba38545a476424f18a60ea6c910b"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#a3862ba38545a476424f18a60ea6c910b">find_deputy</a></td></tr>
<tr class="memdesc:a3862ba38545a476424f18a60ea6c910b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve the <a class="el" href="classbot__procman_1_1sheriff_1_1SheriffDeputy.html" title="Sheriff view of a deputy">SheriffDeputy</a> object by deputy name.  <a href="#a3862ba38545a476424f18a60ea6c910b">More...</a><br/></td></tr>
<tr class="separator:a3862ba38545a476424f18a60ea6c910b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa61147294212787d4febb2cd8711f60c"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#aa61147294212787d4febb2cd8711f60c">purge_useless_deputies</a></td></tr>
<tr class="memdesc:aa61147294212787d4febb2cd8711f60c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clean up the <a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html" title="Controls deputies and processes.">Sheriff</a> internal state.  <a href="#aa61147294212787d4febb2cd8711f60c">More...</a><br/></td></tr>
<tr class="separator:aa61147294212787d4febb2cd8711f60c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad05c38c5e940e0fa7077e78b377d352e"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#ad05c38c5e940e0fa7077e78b377d352e">get_command_by_sheriff_id</a></td></tr>
<tr class="memdesc:ad05c38c5e940e0fa7077e78b377d352e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve a command by its sheriff ID.  <a href="#ad05c38c5e940e0fa7077e78b377d352e">More...</a><br/></td></tr>
<tr class="separator:ad05c38c5e940e0fa7077e78b377d352e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acf0b57459a02f90bca78dd9a9bb5c191"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#acf0b57459a02f90bca78dd9a9bb5c191">get_command_deputy</a></td></tr>
<tr class="memdesc:acf0b57459a02f90bca78dd9a9bb5c191"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve the <a class="el" href="classbot__procman_1_1sheriff_1_1SheriffDeputy.html" title="Sheriff view of a deputy">SheriffDeputy</a> that manages the specified command.  <a href="#acf0b57459a02f90bca78dd9a9bb5c191">More...</a><br/></td></tr>
<tr class="separator:acf0b57459a02f90bca78dd9a9bb5c191"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b426d1d5a2f9e8f47431de2d97cd232"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#a0b426d1d5a2f9e8f47431de2d97cd232">get_all_commands</a></td></tr>
<tr class="memdesc:a0b426d1d5a2f9e8f47431de2d97cd232"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve all commands managed by all deputies.  <a href="#a0b426d1d5a2f9e8f47431de2d97cd232">More...</a><br/></td></tr>
<tr class="separator:a0b426d1d5a2f9e8f47431de2d97cd232"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae7ed98b4ee9d2c487e185a657128b86c"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#ae7ed98b4ee9d2c487e185a657128b86c">get_commands_by_deputy_and_id</a></td></tr>
<tr class="memdesc:ae7ed98b4ee9d2c487e185a657128b86c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Search for commands with the specified deputy name and command id.  <a href="#ae7ed98b4ee9d2c487e185a657128b86c">More...</a><br/></td></tr>
<tr class="separator:ae7ed98b4ee9d2c487e185a657128b86c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a32757c6bc6ce4259b84c94cce71fbab4"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#a32757c6bc6ce4259b84c94cce71fbab4">get_commands_by_id</a></td></tr>
<tr class="memdesc:a32757c6bc6ce4259b84c94cce71fbab4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve all commands with the specified id.  <a href="#a32757c6bc6ce4259b84c94cce71fbab4">More...</a><br/></td></tr>
<tr class="separator:a32757c6bc6ce4259b84c94cce71fbab4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a74882b116d6ef0ba060ed8f5f50f4524"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#a74882b116d6ef0ba060ed8f5f50f4524">get_commands_by_group</a></td></tr>
<tr class="memdesc:a74882b116d6ef0ba060ed8f5f50f4524"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve a list of all commands in the specified group.  <a href="#a74882b116d6ef0ba060ed8f5f50f4524">More...</a><br/></td></tr>
<tr class="separator:a74882b116d6ef0ba060ed8f5f50f4524"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9d692a87fd05aa3160f313cab289586"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#ad9d692a87fd05aa3160f313cab289586">get_active_script</a></td></tr>
<tr class="memdesc:ad9d692a87fd05aa3160f313cab289586"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve the currently executing script.  <a href="#ad9d692a87fd05aa3160f313cab289586">More...</a><br/></td></tr>
<tr class="separator:ad9d692a87fd05aa3160f313cab289586"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8408af210c514d504b17d5f9cc1ddf53"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#a8408af210c514d504b17d5f9cc1ddf53">get_script</a></td></tr>
<tr class="memdesc:a8408af210c514d504b17d5f9cc1ddf53"><td class="mdescLeft">&#160;</td><td class="mdescRight">Look up a script by name.  <a href="#a8408af210c514d504b17d5f9cc1ddf53">More...</a><br/></td></tr>
<tr class="separator:a8408af210c514d504b17d5f9cc1ddf53"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a359734fa1941aee946c2bf0d2e5c7148"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#a359734fa1941aee946c2bf0d2e5c7148">get_scripts</a></td></tr>
<tr class="memdesc:a359734fa1941aee946c2bf0d2e5c7148"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve a list of all scripts.  <a href="#a359734fa1941aee946c2bf0d2e5c7148">More...</a><br/></td></tr>
<tr class="separator:a359734fa1941aee946c2bf0d2e5c7148"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a76b61c23a5abeb0fed2a48f9c0817b40"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#a76b61c23a5abeb0fed2a48f9c0817b40">add_script</a></td></tr>
<tr class="memdesc:a76b61c23a5abeb0fed2a48f9c0817b40"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a new script to the sheriff.  <a href="#a76b61c23a5abeb0fed2a48f9c0817b40">More...</a><br/></td></tr>
<tr class="separator:a76b61c23a5abeb0fed2a48f9c0817b40"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac78d3e9449d1bcb39b8abb63aa2e6d05"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#ac78d3e9449d1bcb39b8abb63aa2e6d05">remove_script</a></td></tr>
<tr class="memdesc:ac78d3e9449d1bcb39b8abb63aa2e6d05"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove a script.  <a href="#ac78d3e9449d1bcb39b8abb63aa2e6d05">More...</a><br/></td></tr>
<tr class="separator:ac78d3e9449d1bcb39b8abb63aa2e6d05"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aadd2ca2c59da29a17e0d752ebafcfe72"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#aadd2ca2c59da29a17e0d752ebafcfe72">check_script_for_errors</a></td></tr>
<tr class="memdesc:aadd2ca2c59da29a17e0d752ebafcfe72"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check a script object for errors that would prevent its execution.  <a href="#aadd2ca2c59da29a17e0d752ebafcfe72">More...</a><br/></td></tr>
<tr class="separator:aadd2ca2c59da29a17e0d752ebafcfe72"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab1dc5b7c4eacfccec6c40be5cc328e40"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#ab1dc5b7c4eacfccec6c40be5cc328e40">execute_script</a></td></tr>
<tr class="memdesc:ab1dc5b7c4eacfccec6c40be5cc328e40"><td class="mdescLeft">&#160;</td><td class="mdescRight">Starts executing a script.  <a href="#ab1dc5b7c4eacfccec6c40be5cc328e40">More...</a><br/></td></tr>
<tr class="separator:ab1dc5b7c4eacfccec6c40be5cc328e40"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a921c5917baa841909b3651e89403b3f7"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#a921c5917baa841909b3651e89403b3f7">abort_script</a></td></tr>
<tr class="memdesc:a921c5917baa841909b3651e89403b3f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cancels execution of the active script.  <a href="#a921c5917baa841909b3651e89403b3f7">More...</a><br/></td></tr>
<tr class="separator:a921c5917baa841909b3651e89403b3f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a32fd012d4b7c1a620ea8ead2cadd9d65"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a32fd012d4b7c1a620ea8ead2cadd9d65"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#a32fd012d4b7c1a620ea8ead2cadd9d65">load_config</a></td></tr>
<tr class="memdesc:a32fd012d4b7c1a620ea8ead2cadd9d65"><td class="mdescLeft">&#160;</td><td class="mdescRight">config_node should be an instance of sheriff_config.ConfigNode <br/></td></tr>
<tr class="separator:a32fd012d4b7c1a620ea8ead2cadd9d65"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8cc18c368b12aaaff34008a159c16d4"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#ab8cc18c368b12aaaff34008a159c16d4">save_config</a></td></tr>
<tr class="memdesc:ab8cc18c368b12aaaff34008a159c16d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write the current sheriff configuration to the specified file object.  <a href="#ab8cc18c368b12aaaff34008a159c16d4">More...</a><br/></td></tr>
<tr class="separator:ab8cc18c368b12aaaff34008a159c16d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:acfc6530f6d7a933ca6e7f4d5fcf4b77f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#acfc6530f6d7a933ca6e7f4d5fcf4b77f">deputy_info_received</a></td></tr>
<tr class="memdesc:acfc6530f6d7a933ca6e7f4d5fcf4b77f"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classbot__procman_1_1signal__slot_1_1Signal.html">Signal</a> emitted when information from a deputy is received and processed.  <a href="#acfc6530f6d7a933ca6e7f4d5fcf4b77f">More...</a><br/></td></tr>
<tr class="separator:acfc6530f6d7a933ca6e7f4d5fcf4b77f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a55537ac141be6ef98850fce592760ea6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#a55537ac141be6ef98850fce592760ea6">command_added</a></td></tr>
<tr class="memdesc:a55537ac141be6ef98850fce592760ea6"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classbot__procman_1_1signal__slot_1_1Signal.html">Signal</a> emitted when a new command is added to the sheriff.  <a href="#a55537ac141be6ef98850fce592760ea6">More...</a><br/></td></tr>
<tr class="separator:a55537ac141be6ef98850fce592760ea6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a851133b9e2f3c2134197842c51646cf7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#a851133b9e2f3c2134197842c51646cf7">command_removed</a></td></tr>
<tr class="memdesc:a851133b9e2f3c2134197842c51646cf7"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classbot__procman_1_1signal__slot_1_1Signal.html">Signal</a> emitted when a command is removed from the sheriff.  <a href="#a851133b9e2f3c2134197842c51646cf7">More...</a><br/></td></tr>
<tr class="separator:a851133b9e2f3c2134197842c51646cf7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a913baa018e68eb770930c9ec83ef7f1d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#a913baa018e68eb770930c9ec83ef7f1d">command_status_changed</a></td></tr>
<tr class="memdesc:a913baa018e68eb770930c9ec83ef7f1d"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classbot__procman_1_1signal__slot_1_1Signal.html">Signal</a> emitted when the status of a command changes (e.g., running, stopped, etc.).  <a href="#a913baa018e68eb770930c9ec83ef7f1d">More...</a><br/></td></tr>
<tr class="separator:a913baa018e68eb770930c9ec83ef7f1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a094ab3850000f45a2641450755a952bb"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#a094ab3850000f45a2641450755a952bb">command_group_changed</a></td></tr>
<tr class="memdesc:a094ab3850000f45a2641450755a952bb"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classbot__procman_1_1signal__slot_1_1Signal.html">Signal</a> emitted when a command is moved into a different group.  <a href="#a094ab3850000f45a2641450755a952bb">More...</a><br/></td></tr>
<tr class="separator:a094ab3850000f45a2641450755a952bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6e329be65d090b056052b88dd7bf338"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#ac6e329be65d090b056052b88dd7bf338">script_added</a></td></tr>
<tr class="memdesc:ac6e329be65d090b056052b88dd7bf338"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classbot__procman_1_1signal__slot_1_1Signal.html">Signal</a> emitted when a script is added.  <a href="#ac6e329be65d090b056052b88dd7bf338">More...</a><br/></td></tr>
<tr class="separator:ac6e329be65d090b056052b88dd7bf338"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af1847b420545ea076aea72290576dd5b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#af1847b420545ea076aea72290576dd5b">script_removed</a></td></tr>
<tr class="memdesc:af1847b420545ea076aea72290576dd5b"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classbot__procman_1_1signal__slot_1_1Signal.html">Signal</a> emitted when a script is removed.  <a href="#af1847b420545ea076aea72290576dd5b">More...</a><br/></td></tr>
<tr class="separator:af1847b420545ea076aea72290576dd5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa1662c770ec27d966432d6e7863d045d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#aa1662c770ec27d966432d6e7863d045d">script_started</a></td></tr>
<tr class="memdesc:aa1662c770ec27d966432d6e7863d045d"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classbot__procman_1_1signal__slot_1_1Signal.html">Signal</a> emitted when a script begins executing.  <a href="#aa1662c770ec27d966432d6e7863d045d">More...</a><br/></td></tr>
<tr class="separator:aa1662c770ec27d966432d6e7863d045d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae1920c28e0fdc2b4947f97a6ff04463c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#ae1920c28e0fdc2b4947f97a6ff04463c">script_action_executing</a></td></tr>
<tr class="memdesc:ae1920c28e0fdc2b4947f97a6ff04463c"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classbot__procman_1_1signal__slot_1_1Signal.html">Signal</a> emitted when a single action in a script begins to run.  <a href="#ae1920c28e0fdc2b4947f97a6ff04463c">More...</a><br/></td></tr>
<tr class="separator:ae1920c28e0fdc2b4947f97a6ff04463c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01ef438f2411ae41d5db98882599a349"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#a01ef438f2411ae41d5db98882599a349">script_finished</a></td></tr>
<tr class="memdesc:a01ef438f2411ae41d5db98882599a349"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classbot__procman_1_1signal__slot_1_1Signal.html">Signal</a> emitted when a script finishes execution.  <a href="#a01ef438f2411ae41d5db98882599a349">More...</a><br/></td></tr>
<tr class="separator:a01ef438f2411ae41d5db98882599a349"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Controls deputies and processes. </p>
<pre class="fragment"> The Sheriff class provides the primary interface for controlling processes
 using the Procman Python API.  It requires a GLib event loop to run.

 example usage:
</pre> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;import bot_procman</div>
<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="keyword">import</span> gobject</div>
<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;</div>
<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;lc = lcm.LCM()</div>
<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;sheriff = bot_procman.Sheriff(lc)</div>
<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;</div>
<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"># add commands or load a config file</span></div>
<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;</div>
<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;mainloop = gobject.MainLoop()</div>
<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;gobject.io_add_watch(lc, gobject.IO_IN, <span class="keyword">lambda</span> *s: lc.handle() <span class="keywordflow">or</span> <span class="keyword">True</span>)</div>
<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;gobject.timeout_add(1000, <span class="keyword">lambda</span> *s: sheriff.send_orders() <span class="keywordflow">or</span> <span class="keyword">True</span>)</div>
<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;mainloop.run()</div>
</div><!-- fragment --><h2>Signals</h2>
<p>The <a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html" title="Controls deputies and processes.">Sheriff</a> exposes a number of signals that you can use to register a callback function that gets called when a particular event happens.</p>
<p>For example, to be notified when the status of a command changes:</p>
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="keyword">def </span>on_command_status_changed(cmd_object, old_status, new_status):</div>
<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;    print(<span class="stringliteral">&quot;Command %s status changed from %s -&gt; %s&quot;</span> % (cmd_obj.command_id,</div>
<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;        old_status, new_status)</div>
<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;</div>
<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;sheriff.command_status_changed.connect(on_command_status_changed)</div>
</div><!-- fragment --> </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ac9dad7546c3edf8bf34e2d2f0a39aefe"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.__init__ </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>lcm_obj</em> = <code>None</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Initialize a new <a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html" title="Controls deputies and processes.">Sheriff</a> object. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">lcm_obj</td><td>the LCM object to use for communication. If None, then the sheriff creates a new lcm.LCM() instance. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a921c5917baa841909b3651e89403b3f7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.abort_script </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Cancels execution of the active script. </p>

</div>
</div>
<a class="anchor" id="a28733e39fb57677cdd04be79ec91a904"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.add_command </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>spec</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a new command. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">spec</td><td>a <a class="el" href="classbot__procman_1_1sheriff_1_1SheriffCommandSpec.html" title="Basic command specification.">SheriffCommandSpec</a> that describes the new command to add</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a <a class="el" href="classbot__procman_1_1sheriff_1_1SheriffDeputyCommand.html" title="A command managed by a deputy, which is in turn managed by the Sheriff.">SheriffDeputyCommand</a> object representing the command. </dd></dl>

</div>
</div>
<a class="anchor" id="a76b61c23a5abeb0fed2a48f9c0817b40"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.add_script </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>script</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a new script to the sheriff. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">script</td><td>a SheriffScript object. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="aadd2ca2c59da29a17e0d752ebafcfe72"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.check_script_for_errors </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>script</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>path_to_root</em> = <code>None</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Check a script object for errors that would prevent its execution. </p>
<p>Possible errors include a command or group mentioned in the script not being found by the sheriff.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">script</td><td>a SheriffScript object to inspect</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a list of error messages. If the list is not empty, then each error message indicates a problem with the script. Otherwise, the script can be executed. </dd></dl>

</div>
</div>
<a class="anchor" id="ab1dc5b7c4eacfccec6c40be5cc328e40"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.execute_script </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>script</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Starts executing a script. </p>
<p>If another script is executing, then that script is aborted first. Calling this method executes the first action in the script. Other actions will be invoked during LCM message handling and by the GLib event loop (e.g., timers).</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">script</td><td>a <a class="el" href="classbot__procman_1_1sheriff__script_1_1SheriffScript.html" title="A simple script that can be executed by the Sheriff.">sheriff_script.SheriffScript</a> object to execute </td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#a8408af210c514d504b17d5f9cc1ddf53" title="Look up a script by name.">get_script()</a></dd></dl>
<dl class="section return"><dt>Returns</dt><dd>a list of error messages. If the list is not empty, then each error message indicates a problem with the script. Otherwise, the script has successfully started execution if the returned list is empty. </dd></dl>

</div>
</div>
<a class="anchor" id="a3862ba38545a476424f18a60ea6c910b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.find_deputy </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>name</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Retrieve the <a class="el" href="classbot__procman_1_1sheriff_1_1SheriffDeputy.html" title="Sheriff view of a deputy">SheriffDeputy</a> object by deputy name. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">name</td><td>the name of the desired deputy.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a <a class="el" href="classbot__procman_1_1sheriff_1_1SheriffDeputy.html" title="Sheriff view of a deputy">SheriffDeputy</a> object. </dd></dl>

</div>
</div>
<a class="anchor" id="ad9d692a87fd05aa3160f313cab289586"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.get_active_script </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Retrieve the currently executing script. </p>
<dl class="section return"><dt>Returns</dt><dd>the SheriffScript object corresponding to the active script, or None if there is no active script. </dd></dl>

</div>
</div>
<a class="anchor" id="a0b426d1d5a2f9e8f47431de2d97cd232"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.get_all_commands </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Retrieve all commands managed by all deputies. </p>
<dl class="section return"><dt>Returns</dt><dd>a list of <a class="el" href="classbot__procman_1_1sheriff_1_1SheriffDeputyCommand.html" title="A command managed by a deputy, which is in turn managed by the Sheriff.">SheriffDeputyCommand</a> objects. </dd></dl>

</div>
</div>
<a class="anchor" id="ad05c38c5e940e0fa7077e78b377d352e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.get_command_by_sheriff_id </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>sheriff_id</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Retrieve a command by its sheriff ID. </p>
<p>The sheriff ID is assigned and managed by the sheriff automtically. It is not the same as the user-assigned command ID. You generally should not need to use this function. </p>

</div>
</div>
<a class="anchor" id="acf0b57459a02f90bca78dd9a9bb5c191"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.get_command_deputy </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>command</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Retrieve the <a class="el" href="classbot__procman_1_1sheriff_1_1SheriffDeputy.html" title="Sheriff view of a deputy">SheriffDeputy</a> that manages the specified command. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">command</td><td>a <a class="el" href="classbot__procman_1_1sheriff_1_1SheriffDeputyCommand.html" title="A command managed by a deputy, which is in turn managed by the Sheriff.">SheriffDeputyCommand</a> object</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a <a class="el" href="classbot__procman_1_1sheriff_1_1SheriffDeputy.html" title="Sheriff view of a deputy">SheriffDeputy</a> object corresponding to the deputy that manages the specified command. </dd></dl>

</div>
</div>
<a class="anchor" id="ae7ed98b4ee9d2c487e185a657128b86c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.get_commands_by_deputy_and_id </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>deputy_name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>cmd_id</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Search for commands with the specified deputy name and command id. </p>
<p>This should return at most one command.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">deputy_name</td><td>the desired deputy name </td></tr>
    <tr><td class="paramname">cmd_id</td><td>the desired command id.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a list of <a class="el" href="classbot__procman_1_1sheriff_1_1SheriffDeputyCommand.html" title="A command managed by a deputy, which is in turn managed by the Sheriff.">SheriffDeputyCommand</a> objects matching the query, or an empty list if none are found. </dd></dl>

</div>
</div>
<a class="anchor" id="a74882b116d6ef0ba060ed8f5f50f4524"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.get_commands_by_group </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>group_name</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Retrieve a list of all commands in the specified group. </p>
<p>Use this method to find out what commands are in a group. Commands in subgroups of the specified group are also included.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">group_name</td><td>the name of the desired group</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a list of <a class="el" href="classbot__procman_1_1sheriff_1_1SheriffDeputyCommand.html" title="A command managed by a deputy, which is in turn managed by the Sheriff.">SheriffDeputyCommand</a> objects. </dd></dl>

</div>
</div>
<a class="anchor" id="a32757c6bc6ce4259b84c94cce71fbab4"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.get_commands_by_id </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>cmd_id</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Retrieve all commands with the specified id. </p>
<p>This should only return one command.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">cmd_id</td><td>the desired command id.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a list of <a class="el" href="classbot__procman_1_1sheriff_1_1SheriffDeputyCommand.html" title="A command managed by a deputy, which is in turn managed by the Sheriff.">SheriffDeputyCommand</a> objects matching the query, or an empty list if none are found. </dd></dl>

</div>
</div>
<a class="anchor" id="a642577c26099565a4287a24683ac429b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.get_deputies </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Retrieve a list of known deputies. </p>
<dl class="section return"><dt>Returns</dt><dd>a list of <a class="el" href="classbot__procman_1_1sheriff_1_1SheriffDeputy.html" title="Sheriff view of a deputy">SheriffDeputy</a> objects. </dd></dl>

</div>
</div>
<a class="anchor" id="a7837d99e6b58f8392bcb4d81c9eb3887"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.get_name </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Retrieve the sheriff name, as self reported to deputies. </p>
<p>The sheriff name is automatically set to a combination of the hostname, current PID, and the time the sheriff was created. </p>

</div>
</div>
<a class="anchor" id="a8408af210c514d504b17d5f9cc1ddf53"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.get_script </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>name</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Look up a script by name. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">name</td><td>the name of the script</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a SheriffScript object, or None if no such script is found. </dd></dl>

</div>
</div>
<a class="anchor" id="a359734fa1941aee946c2bf0d2e5c7148"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.get_scripts </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Retrieve a list of all scripts. </p>
<dl class="section return"><dt>Returns</dt><dd>a list of SheriffScript objects </dd></dl>

</div>
</div>
<a class="anchor" id="ab4d9beef725d401bc100d85b17820156"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.is_observer </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Check if the sheriff is in observer mode. </p>
<dl class="section return"><dt>Returns</dt><dd>True if the sheriff is in observer mode, False if not. </dd></dl>

</div>
</div>
<a class="anchor" id="a3ac148220e1ea218b40edc12b17bd9ff"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.move_command_to_deputy </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>cmd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>newdeputy_name</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Move a command from one deputy to another. </p>
<p>This removes the command from one deputy, and creates it in another. This method calls <a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#aff5bb1da6e34f5528dad7cf7d95f5ecf" title="Transmit orders to all deputies.">send_orders()</a>. On return, the passed in command object is no longer valid and should not be used.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">cmd</td><td>a <a class="el" href="classbot__procman_1_1sheriff_1_1SheriffDeputyCommand.html" title="A command managed by a deputy, which is in turn managed by the Sheriff.">SheriffDeputyCommand</a> object to move. This object is invalidated by this method. </td></tr>
    <tr><td class="paramname">newdeputy_name</td><td>the name of the new deputy for the command.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the newly created command </dd></dl>

</div>
</div>
<a class="anchor" id="aa61147294212787d4febb2cd8711f60c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.purge_useless_deputies </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Clean up the <a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html" title="Controls deputies and processes.">Sheriff</a> internal state. </p>
<p>This method is meant to be called when a deputy process has no more commands and terminates. It purges the <a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html" title="Controls deputies and processes.">Sheriff</a>'s internal representation of deputies that don't have any commands. </p>

</div>
</div>
<a class="anchor" id="ac78d3e9449d1bcb39b8abb63aa2e6d05"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.remove_script </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>script</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Remove a script. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">script</td><td>the SheriffScript object to remove. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ae3707376ff61f163de25986f02f8225d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.restart_command </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>cmd</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Starts a command if it's not running, or stop and then start it if it's already running. </p>
<p>If the command is not running, then the deputy will start it. If the command is already running, then the deputy will terminate it and then start it again. This method calls <a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#aff5bb1da6e34f5528dad7cf7d95f5ecf" title="Transmit orders to all deputies.">send_orders()</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">cmd</td><td>a <a class="el" href="classbot__procman_1_1sheriff_1_1SheriffDeputyCommand.html" title="A command managed by a deputy, which is in turn managed by the Sheriff.">SheriffDeputyCommand</a> object specifying the command to restart. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ab8cc18c368b12aaaff34008a159c16d4"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.save_config </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>file_obj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Write the current sheriff configuration to the specified file object. </p>
<p>The current sheriff configuration consists of all commands managed by all deputies along with their settings, and all scripts as well. This information is written out to the specified file object, which can then be loaded into the sheriff again at a later point in time.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">file_obj</td><td>a file object for saving the current sheriff configuration </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a7b9750dc2a17052edec129f7841ce3ee"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.schedule_command_for_removal </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>cmd</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Remove a command. </p>
<p>This starts the process of purging a command from the sheriff and deputies. It is not instantaneous, because the sheriff needs to wait for removal confirmation from the deputy.</p>
<p>This method calls <a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#aff5bb1da6e34f5528dad7cf7d95f5ecf" title="Transmit orders to all deputies.">send_orders()</a></p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">cmd</td><td>a <a class="el" href="classbot__procman_1_1sheriff_1_1SheriffDeputyCommand.html" title="A command managed by a deputy, which is in turn managed by the Sheriff.">SheriffDeputyCommand</a> object to remove. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="aff5bb1da6e34f5528dad7cf7d95f5ecf"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.send_orders </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Transmit orders to all deputies. </p>
<p>Call this method for the sheriff to send updated orders to its deputies. This method is automatically called when you call other sheriff methods such as <a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#a28733e39fb57677cdd04be79ec91a904" title="Add a new command.">add_command()</a>, <a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#a74ef75f97144cafbc00c761a7adf9cd2" title="Sets a command&#39;s desired status to running.">start_command()</a>, etc. In general, you should only need to explicitly call this method for a periodic transmission to be robust against network failures and dropped messages.</p>
<dl class="section note"><dt>Note</dt><dd>Orders will only be sent to a deputy if the sheriff has received at least one update from the deputy. </dd></dl>

</div>
</div>
<a class="anchor" id="ac8a30bf0691114fcef80c18d8cf65282"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.set_auto_respawn </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>cmd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>newauto_respawn</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set if a deputy should auto-respawn the command when the command terminates. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">cmd</td><td>a <a class="el" href="classbot__procman_1_1sheriff_1_1SheriffDeputyCommand.html" title="A command managed by a deputy, which is in turn managed by the Sheriff.">SheriffDeputyCommand</a> object. </td></tr>
    <tr><td class="paramname">newauto_respawn</td><td>True if the command should be automatically restarted. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a48f941e52ff14bbe079845952f0ea67c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.set_command_exec </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>cmd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>exec_str</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set the executable string for a command. </p>
<p>Calling this will not terminate the command if it's already running, and the new execution command will not take effect until the next time the command is run by the deputy.</p>
<p>This method does not call <a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#aff5bb1da6e34f5528dad7cf7d95f5ecf" title="Transmit orders to all deputies.">send_orders()</a></p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">cmd</td><td>a <a class="el" href="classbot__procman_1_1sheriff_1_1SheriffDeputyCommand.html" title="A command managed by a deputy, which is in turn managed by the Sheriff.">SheriffDeputyCommand</a> object. </td></tr>
    <tr><td class="paramname">exec_str</td><td>the actual command string to execute. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a5a50739c97fa09c7a599b926f1c6ae7e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.set_command_group </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>cmd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>group_name</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set the command group. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">cmd</td><td>a <a class="el" href="classbot__procman_1_1sheriff_1_1SheriffDeputyCommand.html" title="A command managed by a deputy, which is in turn managed by the Sheriff.">SheriffDeputyCommand</a> object. </td></tr>
    <tr><td class="paramname">group_name</td><td>the new group name for the command. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ac0aad034f4571659153728c7fba8dd1d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.set_command_id </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>cmd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>new_id</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set the command id. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">cmd</td><td>a <a class="el" href="classbot__procman_1_1sheriff_1_1SheriffDeputyCommand.html" title="A command managed by a deputy, which is in turn managed by the Sheriff.">SheriffDeputyCommand</a> object. </td></tr>
    <tr><td class="paramname">new_id</td><td>the new id to identify a command with. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="aa9e47bd02b839a65daf8de78fc935211"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.set_command_stop_signal </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>cmd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>new_stop_signal</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set the OS signal that is sent to a command when requesting it to stop cleanly. </p>
<p>If the command doesn't cleanly exit within the stop time allowed, then it is sent a SIGKILL. </p>

</div>
</div>
<a class="anchor" id="a9f14fb663b50c7b9746d8ee06bbdd12d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.set_command_stop_time_allowed </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>cmd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>new_stop_time_allowed</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set how much time (seconds) to wait for a command to exit cleanly when stopping the command, before sending it a SIGKILL. </p>
<p>Integer values only. </p>

</div>
</div>
<a class="anchor" id="a71c74b3794ea8bfb3544a66873999db6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.set_observer </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>is_observer</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set the sheriff into observation mode, or remove it from observation mode. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">is_observer</td><td>True if the sheriff should enter observation mode, False if it should leave it. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a74ef75f97144cafbc00c761a7adf9cd2"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.start_command </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>cmd</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sets a command's desired status to running. </p>
<p>If the command is not running, then the deputy will start it. If the command is already running, then no action is taken. This method calls <a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#aff5bb1da6e34f5528dad7cf7d95f5ecf" title="Transmit orders to all deputies.">send_orders()</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">cmd</td><td>a <a class="el" href="classbot__procman_1_1sheriff_1_1SheriffDeputyCommand.html" title="A command managed by a deputy, which is in turn managed by the Sheriff.">SheriffDeputyCommand</a> object specifying the command to run. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ab166c0430ed8c7fe2e5b5031946ba410"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">def bot_procman.sheriff.Sheriff.stop_command </td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>self</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>cmd</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sets a command's desired status to stopped. </p>
<p>If the command is running, then the deputy will stop it. If the command is not running, then no action is taken. This method calls <a class="el" href="classbot__procman_1_1sheriff_1_1Sheriff.html#aff5bb1da6e34f5528dad7cf7d95f5ecf" title="Transmit orders to all deputies.">send_orders()</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">cmd</td><td>a <a class="el" href="classbot__procman_1_1sheriff_1_1SheriffDeputyCommand.html" title="A command managed by a deputy, which is in turn managed by the Sheriff.">SheriffDeputyCommand</a> object specifying the command to stop. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="a55537ac141be6ef98850fce592760ea6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bot_procman.sheriff.Sheriff.command_added</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><a class="el" href="classbot__procman_1_1signal__slot_1_1Signal.html">Signal</a> emitted when a new command is added to the sheriff. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">deputy_object</td><td>is a <a class="el" href="classbot__procman_1_1sheriff_1_1SheriffDeputy.html" title="Sheriff view of a deputy">SheriffDeputy</a> for the deputy that owns the command. </td></tr>
    <tr><td class="paramname">cmd_object</td><td>is a <a class="el" href="classbot__procman_1_1sheriff_1_1SheriffDeputyCommand.html" title="A command managed by a deputy, which is in turn managed by the Sheriff.">SheriffDeputyCommand</a> for the new command. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a094ab3850000f45a2641450755a952bb"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bot_procman.sheriff.Sheriff.command_group_changed</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><a class="el" href="classbot__procman_1_1signal__slot_1_1Signal.html">Signal</a> emitted when a command is moved into a different group. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">cmd_object</td><td>the command whose group changes. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a851133b9e2f3c2134197842c51646cf7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bot_procman.sheriff.Sheriff.command_removed</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><a class="el" href="classbot__procman_1_1signal__slot_1_1Signal.html">Signal</a> emitted when a command is removed from the sheriff. </p>
<p><code>command_removed(deputy_object, cmd_object)</code></p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">deputy_object</td><td>is a <a class="el" href="classbot__procman_1_1sheriff_1_1SheriffDeputy.html" title="Sheriff view of a deputy">SheriffDeputy</a> for the deputy that owned the command. </td></tr>
    <tr><td class="paramname">cmd_object</td><td>is a <a class="el" href="classbot__procman_1_1sheriff_1_1SheriffDeputyCommand.html" title="A command managed by a deputy, which is in turn managed by the Sheriff.">SheriffDeputyCommand</a> for the removed command. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a913baa018e68eb770930c9ec83ef7f1d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bot_procman.sheriff.Sheriff.command_status_changed</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><a class="el" href="classbot__procman_1_1signal__slot_1_1Signal.html">Signal</a> emitted when the status of a command changes (e.g., running, stopped, etc.). </p>
<p><code>command_status_changed(cmd_object, old_status, new_status)</code></p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">cmd_object</td><td>is a <a class="el" href="classbot__procman_1_1sheriff_1_1SheriffDeputyCommand.html" title="A command managed by a deputy, which is in turn managed by the Sheriff.">SheriffDeputyCommand</a> for the command. </td></tr>
    <tr><td class="paramname">old_status</td><td>indicates the old command status. </td></tr>
    <tr><td class="paramname">new_status</td><td>indicates the new command status. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="acfc6530f6d7a933ca6e7f4d5fcf4b77f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bot_procman.sheriff.Sheriff.deputy_info_received</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><a class="el" href="classbot__procman_1_1signal__slot_1_1Signal.html">Signal</a> emitted when information from a deputy is received and processed. </p>
<p><code>deputy_info_received(deputy_object)</code></p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">deputy_object</td><td>is a <a class="el" href="classbot__procman_1_1sheriff_1_1SheriffDeputy.html" title="Sheriff view of a deputy">SheriffDeputy</a> corresponding to the updated deputy. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ae1920c28e0fdc2b4947f97a6ff04463c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bot_procman.sheriff.Sheriff.script_action_executing</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><a class="el" href="classbot__procman_1_1signal__slot_1_1Signal.html">Signal</a> emitted when a single action in a script begins to run. </p>
<p>(e.g., start a command) <code>script_action_executing(script_object, action)</code></p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">script_object</td><td>a <a class="el" href="classbot__procman_1_1sheriff__script_1_1SheriffScript.html">SheriffScript</a> object </td></tr>
    <tr><td class="paramname">action</td><td>one of: <a class="el" href="classbot__procman_1_1sheriff__script_1_1StartStopRestartAction.html">StartStopRestartAction</a>, <a class="el" href="classbot__procman_1_1sheriff__script_1_1WaitMsAction.html">WaitMsAction</a>, <a class="el" href="classbot__procman_1_1sheriff__script_1_1WaitStatusAction.html">WaitStatusAction</a>, <a class="el" href="classbot__procman_1_1sheriff__script_1_1RunScriptAction.html">RunScriptAction</a> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ac6e329be65d090b056052b88dd7bf338"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bot_procman.sheriff.Sheriff.script_added</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><a class="el" href="classbot__procman_1_1signal__slot_1_1Signal.html">Signal</a> emitted when a script is added. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">script_object</td><td>a <a class="el" href="classbot__procman_1_1sheriff__script_1_1SheriffScript.html">SheriffScript</a> object. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a01ef438f2411ae41d5db98882599a349"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bot_procman.sheriff.Sheriff.script_finished</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><a class="el" href="classbot__procman_1_1signal__slot_1_1Signal.html">Signal</a> emitted when a script finishes execution. </p>
<p><code>script_finished(script_object)</code></p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">script_object</td><td>a SheriffScript object </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="af1847b420545ea076aea72290576dd5b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bot_procman.sheriff.Sheriff.script_removed</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><a class="el" href="classbot__procman_1_1signal__slot_1_1Signal.html">Signal</a> emitted when a script is removed. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">script_object</td><td>a <a class="el" href="classbot__procman_1_1sheriff__script_1_1SheriffScript.html">SheriffScript</a> object. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="aa1662c770ec27d966432d6e7863d045d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bot_procman.sheriff.Sheriff.script_started</td>
        </tr>
      </table>
</div><div class="memdoc">

<p><a class="el" href="classbot__procman_1_1signal__slot_1_1Signal.html">Signal</a> emitted when a script begins executing. </p>
<p><code>script_started(script_object)</code></p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">script_object</td><td>a <a class="el" href="classbot__procman_1_1sheriff__script_1_1SheriffScript.html">SheriffScript</a> object. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>/home/albert/proj/libbot-svn/trunk/bot2-procman/python/src/bot_procman/sheriff.py</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Oct 12 2013 01:18:29 for procman by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.3.1
</small></address>
</body>
</html>
